The statements in this section merely provide background information related to the present disclosure and may not constitute prior art.
Most computers sold today include one or more Universal Serial Bus (USB) connectors. The USB connectors allow users to connect mice, printers, jump drives, microphones, USB cables, headsets, and other devices to the computer quickly and easily. The computers typically run an operating system (OS) that supports the USB to allow easy installation. As compared to other ways of connecting devices to the computer (including parallel ports, serial ports and custom cards installed inside the computer's case), the USB devices are relatively simple. If the USB device is a new device, the OS auto-detects the USB device and may initiate a dialog with the user to locate a driver for the USB device. If the USB device has already been installed, the computer activates the USB device.
A USB cable typically includes two wires for power (typically 5V (volts) and ground) and a twisted pair of wires to carry data. The USB cable may also be shielded. Low-power devices (such as mice and/or other devices) can draw their power directly from the USB connection. High-power devices (such as printers and/or other devices) have power supplies and draw minimal power from the USB connection. USB devices are hot-swappable, which means that they can be plugged and unplugged at any time.
The host computer powers up, queries all of the USB devices connected to the bus and assigns an address to each USB device. This process is called enumeration—USB devices are also enumerated when they are connected to the bus. The host computer determines the type of data transfer that the USB device employs. Devices such as mice or keyboards, which send relatively small amounts of data, tend to use an interrupt mode. Devices such as printers, which receive data in large packets, tend to use a bulk transfer mode. Data is sent to the printer in blocks and verified. Streaming devices (such as speakers) use an isochronous mode. Data streams between the device and the host in real-time without error correction.